home *** CD-ROM | disk | FTP | other *** search
- import java.io.IOException;
- import java.util.Date;
- import java.util.Random;
- import javax.microedition.lcdui.Graphics;
- import javax.microedition.lcdui.Image;
-
- public class MemBoard {
- private static final int ROWS = 4;
- private static final int COLS = 4;
- private static final int CARDS = 16;
- private static final int PAIRS = 8;
- private static final String TRYS_STR = "trys:";
- private static final String PAIRS_STR = "pairs:";
- private int[] board;
- private Image cardBackSide;
- private Image[] cardFrontSide;
- private Image cursorOn;
- private Image cursorOff;
- private int curX;
- private int curY;
- private int c1Index;
- private int c2Index;
- private int trys;
- private int pairs;
-
- public MemBoard() {
- try {
- this.cardBackSide = Image.createImage("m0.png");
- this.cardFrontSide = new Image[]{Image.createImage("m1.png"), Image.createImage("m2.png"), Image.createImage("m3.png"), Image.createImage("m4.png"), Image.createImage("m5.png"), Image.createImage("m6.png"), Image.createImage("m7.png"), Image.createImage("m8.png")};
- this.cursorOn = Image.createImage("cursorOn.png");
- this.cursorOff = Image.createImage("cursorOff.png");
- } catch (IOException var2) {
- }
-
- this.newGame();
- }
-
- public void newGame() {
- Date var7 = new Date();
- int[] var5 = new int[16];
- this.board = new int[16];
-
- for(int var3 = 0; var3 < 8; ++var3) {
- var5[var3] = var3 + 1;
- var5[var3 + 8] = var3 + 1;
- this.board[var3] = var3 + 1;
- this.board[var3 + 8] = var3 + 1;
- }
-
- Random var6 = new Random();
- var6.setSeed(var7.getTime());
- int var2 = 16;
-
- for(int var8 = 0; var8 < 16; ++var8) {
- int var1 = Math.abs(var6.nextInt()) % var2;
- this.board[var8] = var5[var1];
- --var2;
-
- for(int var4 = var1; var4 < var2; ++var4) {
- var5[var4] = var5[var4 + 1];
- }
- }
-
- this.curX = 0;
- this.curY = 0;
- this.c1Index = -1;
- this.c2Index = -1;
- this.trys = 0;
- this.pairs = 0;
- }
-
- public void drawBoard(Graphics var1) {
- for(int var2 = 0; var2 < 4; ++var2) {
- for(int var3 = 0; var3 < 4; ++var3) {
- if (this.board[var2 + var3 * 4] != 0) {
- var1.drawImage(this.cardBackSide, 2 + var2 * 17, 2 + var3 * 17, 20);
- } else {
- var1.setColor(255, 255, 255);
- var1.fillRect(2 + var2 * 17, 2 + var3 * 17, 15, 15);
- }
- }
- }
-
- var1.setColor(0, 0, 0);
- var1.drawString("trys:", 70, 2, 20);
- var1.drawString(Integer.toString(this.trys), 72, 17, 20);
- var1.drawString("pairs:", 70, 42, 20);
- var1.drawString(Integer.toString(this.pairs), 72, 57, 20);
- }
-
- public void drawCursor(Graphics var1) {
- var1.drawImage(this.cursorOn, this.curX * 17, this.curY * 17, 20);
- }
-
- public void eraseCursor(Graphics var1) {
- var1.drawImage(this.cursorOff, this.curX * 17, this.curY * 17, 20);
- }
-
- public boolean gameOver() {
- return this.pairs == 8;
- }
-
- public void moveCursor(int var1) {
- switch (var1) {
- case 0:
- --this.curY;
- break;
- case 1:
- ++this.curY;
- break;
- case 2:
- --this.curX;
- break;
- case 3:
- ++this.curX;
- }
-
- if (this.curY < 0) {
- this.curY = 3;
- } else if (this.curY > 3) {
- this.curY = 0;
- }
-
- if (this.curX < 0) {
- this.curX = 3;
- } else if (this.curX > 3) {
- this.curX = 0;
- }
-
- }
-
- public boolean showCard(Graphics var1) {
- if (this.board[this.curX + this.curY * 4] != 0) {
- if (this.c1Index == -1) {
- this.c1Index = this.curX + this.curY * 4;
- } else if (this.c1Index != this.curX + this.curY * 4) {
- this.c2Index = this.curX + this.curY * 4;
- }
-
- var1.drawImage(this.cardFrontSide[this.board[this.curX + this.curY * 4] - 1], 2 + this.curX * 17, 2 + this.curY * 17, 20);
- if (this.c1Index != -1 && this.c2Index != -1) {
- if (this.board[this.c1Index] == this.board[this.c2Index]) {
- this.board[this.c1Index] = 0;
- this.board[this.c2Index] = 0;
- ++this.pairs;
- }
-
- ++this.trys;
- this.c1Index = -1;
- this.c2Index = -1;
- return true;
- }
- }
-
- return false;
- }
-
- public int numTrys() {
- return this.trys;
- }
- }
-